#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include <sys/types.h>
#include<pthread.h>
#include<thread>

//linux
// void*thread_func(void*arg){
//     while(1){
//     std::cout<<"Thread "<<(const char*)arg<<" is running"<<"pid:"<<getpid()<<std::endl;
//     sleep(1);
//     }
//     return NULL;
// }
// int main(){
//     pthread_t t1;
//     pthread_create(&t1,NULL,thread_func,(void*)"Thread_1");
//     while(1){
//         std::cout<<"Main Thread"<<"pid:"<<getpid()<<std::endl;
//         sleep(1);
//     }
//     return 0;
// }
//c++11
// void hello()
// {
//     while(1){
//     std::cout << "Hello, World from thread "
//               << std::this_thread::get_id() << "!\n";
//     }
// }

// int main()
// {
//     std::thread t(hello);
//     hello();
//     t.join();
//     return 0;
// }
void showid(pthread_t id){
    pthread_t tid=pthread_self();
    if(tid==id){
        std::cout<<"Main Thread"<<std::endl;
    }else{
        std::cout<<"Thread "<<tid<<std::endl;
    }
}
void* thread_func(void*arg){
    while(1){
        std::cout<<"Thread "<<(const char*)arg<<" is running"<<"pid:"<<getpid()<<std::endl;
        sleep(1);
    }
    return nullptr;
}
int main(int argc, char const *argv[]){
    pthread_t t1;
    int n=pthread_create(&t1,NULL,thread_func,(void*)"Thread_1");
    if(n!=0){
        std::cout<<"Thread creation failed"<<std::endl;
        return 1;
    }
    showid(t1);
    //线程创建好后要被主线程等待，如若不等待会造成类似僵尸进程问题
    pthread_join(t1,NULL);
    return 0;
}